var utils = require("../utils/utils");
var ocr_utils = require("../utils/ocr_utils");
var ad = require("./ad");
var in_task = {
  init() {
    var logger = utils.create_logger("in_task init: ");
    var tasks = [
      { text: "看小视频再领", type: 0 },
      { text: "看视频再领", type: 1 },
    ];
    var texts = tasks.map((i) => i.text);
    var ocr_text = ocr_utils.screen_exists_text_one(texts, false);
    if (ocr_text) {
      var task = tasks.filter((task) => {
        return ocr_utils
          .get_reg_exp(task.text, false)
          .reg_exp.test(ocr_text.text);
      })[0];
      logger("找到--" + task.text + "--");
      utils.click_bounds(ocr_text.bounds);
      sleep(2 * 1000);
      logger("开始任务类型--" + task.type + "--");
      this.run(task.type);
      return;
    }
    var ocr_text = ocr_utils.screen_exists_text_one("开心收下", false);
    if (ocr_text) {
      logger("找到--开心收下--");
      utils.click_ocr_text(ocr_text);
      sleep(utils.get_random_interval(3, 0, 2, 1000));
    }
    var ocr_text = ocr_utils.screen_exists_text_one("最多再领", false);
    if (ocr_text) {
      logger("找到--最多再领--");
      back();
      sleep(utils.get_random_interval(3, 0, 2, 1000));
    }
    this.after();
  },
  watch_small_video() {
    //看小视频再领200金币
    var logger = utils.create_logger("in_task watch_small_video: ");
    var interval = 35 + random(0, 5);
    logger("即将看--小视频--" + interval + "秒");
    while (interval > 2) {
      sleep(2 * 1000);
      if (ocr_utils.screen_exists_text_one("直播间")) {
        logger("找到--xxx--,将向上滑动1次");
        utils.swipe(1 / 2, 8 / 10, 1 / 2, 2 / 10);
        continue;
      }
      interval = interval - 2;
    }
    if (interval > 0) {
      sleep(interval * 1000);
    }
  },
  run(type) {
    var logger = utils.create_logger("in_task run: ");
    if (type == 0) {
      this.watch_small_video();
      var ocr_text = ocr_utils.screen_exists_text_one("点击领取", false);
      if (ocr_text) {
        logger("找到--点击领取--");
        utils.click_bounds(ocr_text.bounds);
        sleep(2 * 1000);
        var ocr_text = ocr_utils.screen_exists_text_one("看完视频再领", false);
        if (ocr_text) {
          logger("找到--看完视频再领--");
          utils.click_bounds(ocr_text.bounds);
          sleep(2 * 1000);
          ad.init(
            function () {
              var ui_text = utils.exists_text_starts_with("领取成功");
              if (ui_text) {
                logger("找到--领取成功--");
              }
              return ui_text;
            },
            function () {
              if (utils.exists_text("恭喜你获得")) {
                logger("找到--恭喜你获得--");
                return true;
              }
              if (utils.exists_text("恭喜获得惊喜奖励")) {
                logger("找到--恭喜获得惊喜奖励--");
                return true;
              }
              if (utils.exists_text("现金收益")) {
                logger("找到--现金收益--");
                return true;
              }
            },
            function () {
              return ocr_utils.screen_exists_text_all(["首页", "发现"], false);
            },
            ["看视频再得"]
          );
          if (ad.in_task) {
            this.init();
            return;
          }
          this.after();
          return;
        }
      }
      back();
      sleep(2 * 1000);
      return;
    }
    if (type == 1) {
      //看视频再领
      logger("即将--看视频--");
      ad.init(
        function () {
          var ui_text = utils.exists_text_starts_with("领取成功");
          if (ui_text) {
            logger("找到--领取成功--");
          }
          return ui_text;
        },
        function () {
          if (utils.exists_text("恭喜你获得")) {
            logger("找到--恭喜你获得--");
            return true;
          }
          if (utils.exists_text("恭喜获得惊喜奖励")) {
            logger("找到--恭喜获得惊喜奖励--");
            return true;
          }
          if (utils.exists_text("现金收益")) {
            logger("找到--现金收益--");
            return true;
          }
        },
        function () {
          return ocr_utils.screen_exists_text_all(["首页", "发现"], true);
        },
        ["看视频再得"]
      );
      if (ad.in_task) {
        this.init();
        return;
      }
      this.after();
      return;
    }
    this.after();
  },
  after() {
    console.log("in_task after");
    this.next();
  },
  next() {
    console.log("in_task next");
  },
};

module.exports = in_task;
